package com.financing.platform.vo;

import java.math.BigDecimal;
import java.util.List;

import com.financing.platform.common.CsvExportable;
import com.financing.platform.dto.FpOrderCostDTO;
import com.financing.platform.dto.FpProjectRabate;
import com.financing.platform.dto.OrderContractDTO;
import com.financing.platform.dto.OrderFlowDTO;
import com.financing.platform.util.DateUtil;
import com.financing.platform.util.StringUtil;

public class OrderVO extends BaseVO implements CsvExportable{

	/** 
	* @Fields serialVersionUID :   
	*/ 
	private static final long serialVersionUID = -898696837548947795L;

	/**
	 * 订单IDs
	 */
	private String orderIds;


	/**
	 * 订单IDfile
	 */
	private String orderIdFile;

	/**
	 * 订单ID
	 */
	private String orderId;
	
	/**
	 * 客户ID
	 */
	private Integer oCId;
	
	/**
	 * 订单编号
	 */
	private String oCode;
	
	/**
	 * 产品ID
	 */
	private Integer oProjectId;
	
	/**
	 * FAID
	 */
	private String oFAId;
	
	/**
	 * 订单金额
	 */
	private BigDecimal oAmount;
	
	/**
	 * 订单状态
	 */
	private Integer oStatus;
	
	/**
	 * 备注
	 */
	private String oRemark;
	
	/**
	 * 返佣率
	 */
	private BigDecimal oRebateRate;
	
	/**
	 * 返佣金额
	 */
	private BigDecimal oRebateAmount;
	/**
	 * 销售价
	 */
	private BigDecimal oSellingPrice;
	/**
	 * 销售返佣额
	 */
	private BigDecimal oSellingRebate;
	/**
	 * 成本价
	 */
	private BigDecimal oCostPrice;
	/**
	 * 成本返佣额
	 */
	private BigDecimal oCostRebate;
	/**
	 * 核心价
	 */
	private BigDecimal oCorePrice;
	/**
	 * 核心返佣额
	 */
	private BigDecimal oCoreRebate;
	/**
	 * 成交价
	 */
	private BigDecimal oTransactionPrice;
	/**
	 * 成交返佣额
	 */
	private BigDecimal oTransactionRebate;
	
	/**
	 * 合同列表
	 */
	private List<OrderContractDTO> orderContractList;
	
	/**
	 * FA登陆名
	 */
	private String oULoginName ;
	
	/**
	 * 产品名称
	 */
	private String oPName;
	/**
	 * 产品类型  01:私募基金、02:信托、03：资管、04：有限合伙、05：PE\VC
	 */
	private String oPType;
	
	/**
	 * 客户姓名
	 */
	private String oCName;
	
	/**
	 * fa电话号码
	 */
	private String oUTelephone;
	
	/**
	 * fa手机号码
	 */
	private String oUMobile;
	
	
	/**
	 * 拉黑状态
	 */
	private String oDefriendStatus;
	
	
	/**
	 * 创建时间-开始
	 */
	private String  createDateStart;
	/**
	 * 创建时间-结束
	 */
	private String  createDateEnd;
	
	
	/**
	 * 订单金额区间-开始
	 */
	private BigDecimal oAmountStart;
	/**
	 * 订单金额区间-结束
	 */
	private BigDecimal oAmountEnd;
	
	/**
	 * 订单管理员
	 */
	private String orderManagerUser;
	
	/**
	 * 系统管理员ID
	 */
	private String systemUserId;
	
	/**
	 * 查询时，是否选择查询没有订单管理员
	 */
	private String isnoManagerUser;
	
	/**
	 * 财务打款日期、创建时间-开始
	 */
	private String flowCreateDateStart;
	
	/**
	 * 财务打款日期、创建时间-结束
	 */
	private String flowCreateDateEnd;
	
	/**
	 * 产品创建者 TODO 命名冲突
	 */
	private String productCreateById;
	
	private String productCreateBy;
	// ++++++add by 订单流程改造
	/**
	 * 后端核心价
	 */
	private BigDecimal oBackCorePrice;
	/**
	 * 后端核心返佣额
	 */
	private BigDecimal oBackCoreRebate;
	/**
	 * 后端成本价
	 */
	private BigDecimal oBackCostPrice;
	/**
	 * 后端成本返佣额
	 */
	private BigDecimal oBackCostRebate;
	/**
	 * 后端销售机构价
	 */
	private BigDecimal oBackSellingPrice;
	/**
	 * 后端销售机构返佣额
	 */
	private BigDecimal oBackSellingRebate;
	/**
	 * 后端挂网价
	 */
	private BigDecimal oBackRebateRate;
	/**
	 * 后端挂网返佣额
	 */
	private BigDecimal oBackRebateAmount;
	/**
	 * 后端成交价
	 */
	private BigDecimal oBackTransactionPrice;
	/**
	 * 后端成交返佣额
	 */
	private BigDecimal oBackTransactionRebate;
	/**
	 * 上游打款人
	 */
	private String upstreamHitman;
	/**
	 * 上游打款人帐号
	 */
	private String upstreamHitmanNum;
	/**
	 *  收款人
	 */
	private String oFARealName;
	/**
	 * 收款人帐号
	 */
	private String oFACardNum;
	
	/**
	 * 寄出合同编码
	 */
	private String sendContractNum;
	/**
	 * 收回合同编码
	 */
	private String receiveContractNum;
	/**
	 * 确认前端返佣价 上游前端结拥价
	 */
	private BigDecimal confirmForntRebate;
	/**
	 * 确认前端返佣额 上游前端结拥额
	 */
	private BigDecimal confirmForntAmount;
	/**
	 * 确认后端返佣价 上游后端结拥价
	 */
	private BigDecimal confirmBackRebate;
	/**
	 * 确认后端返佣额 上游后端结拥额
	 */
	private BigDecimal confirmBackAmount;
	/**
	 * 确认其他打款额
	 */
	private BigDecimal confirmOtherAmount;
	/**
	 * 确认其他打款额说明
	 */
	private String comfirmOtherSectionDesc;
	/**
	 * 财务前端结拥
	 */
	private BigDecimal oFinanceFrontRebate;
	/**
	 * 财务后端结拥
	 */
	private BigDecimal oFinanceBackRebate;
	/**
	 * 活动打款
	 */
	private BigDecimal oActivityAmount;
	/**
	 * 活动打款说明
	 */
	private String oPlaySectionDesc;
	/**
	 * 财务其他打款额
	 */
	private BigDecimal oFinanceOtherAmount;
	/**
	 * 财务其他打款额说明
	 */
	private String oFinancOtherAmountDesc;
	/**
	 * 结款类型 01:产品成立结；02：到款立结
	 */
	private String oKnotType;
	/**
	 * 合同凭证URL
	 */
	private String oFrontContractDocument;
	/**
	 * 前端打款凭条URL
	 */
	private String oContractDocument;
	/**
	 * 后端打款凭条URL
	 */
	private String oBackContractDocument;
	/**
	 * 订单跟进人
	 */
	private String oFlowerId;
	/**
	 * 订单跟进人
	 */
	private String oFlowerName;
	
	/**
	 * 订单负责人
	 */
	private String oManagerId;
	/**
	 * 产品负责人
	 */
	private String oManagerName;
	/**
	 * 预期年华收益
	 */
	private String oAnnualRevenue;
	/**
	 * 订单取消原因
	 */
	private String oCancelReason;
	
	/**
	 * 订单后端状态
	 */
	private Integer oBackStatus;
	
	/**
	 * 媒体来源
	 */
	private String  oMediaSource;


	private List<FpProjectRabate> rebateList;//产品 区间信息

	private List<OrderFlowDTO> orderFlowList;//订单  流水记录

	private List<FpOrderCostDTO> orderCostList;//订单  费用流水

	private boolean backApplyStatus;// 是否可以申请后端

	

	public String getoCancelReason() {
		return oCancelReason;
	}

	public void setoCancelReason(String oCancelReason) {
		this.oCancelReason = oCancelReason;
	}

	public String getProductCreateById() {
		return productCreateById;
	}

	public void setProductCreateById(String productCreateById) {
		this.productCreateById = productCreateById;
	}

	public String getFlowCreateDateStart() {
		return flowCreateDateStart;
	}

	public void setFlowCreateDateStart(String flowCreateDateStart) {
		this.flowCreateDateStart = flowCreateDateStart;
	}

	public String getFlowCreateDateEnd() {
		return flowCreateDateEnd;
	}

	public void setFlowCreateDateEnd(String flowCreateDateEnd) {
		this.flowCreateDateEnd = flowCreateDateEnd;
	}

	public Integer getoCId() {
		return oCId;
	}

	public void setoCId(Integer oCId) {
		this.oCId = oCId;
	}

	public Integer getoProjectId() {
		return oProjectId;
	}

	public void setoProjectId(Integer oProjectId) {
		this.oProjectId = oProjectId;
	}

	public BigDecimal getoAmount() {
		return oAmount;
	}

	public void setoAmount(BigDecimal oAmount) {
		this.oAmount = oAmount;
	}

	public Integer getoStatus() {
		return oStatus;
	}

	public void setoStatus(Integer oStatus) {
		this.oStatus = oStatus;
	}

	public String getoRemark() {
		return oRemark;
	}

	public void setoRemark(String oRemark) {
		this.oRemark = oRemark;
	}

	public BigDecimal getoRebateRate() {
		return oRebateRate;
	}

	public void setoRebateRate(BigDecimal oRebateRate) {
		this.oRebateRate = oRebateRate;
	}

	public BigDecimal getoRebateAmount() {
		return oRebateAmount;
	}

	public void setoRebateAmount(BigDecimal oRebateAmount) {
		this.oRebateAmount = oRebateAmount;
	}

	public List<OrderContractDTO> getOrderContractList() {
		return orderContractList;
	}

	public void setOrderContractList(List<OrderContractDTO> orderContractList) {
		this.orderContractList = orderContractList;
	}

	public String getoULoginName() {
		return oULoginName;
	}

	public void setoULoginName(String oULoginName) {
		this.oULoginName = oULoginName;
	}

	public String getoUTelephone() {
		return oUTelephone;
	}

	public void setoUTelephone(String oUTelephone) {
		this.oUTelephone = oUTelephone;
	}

	public String getoCName() {
		return oCName;
	}

	public String getoCode() {
		return oCode;
	}

	public void setoCode(String oCode) {
		this.oCode = oCode;
	}

	public void setoCName(String oCName) {
		this.oCName = oCName;
	}

	public String getoPName() {
		return oPName;
	}

	public void setoPName(String oPName) {
		this.oPName = oPName;
	}

	public String getoUMobile() {
		return oUMobile;
	}

	public void setoUMobile(String oUMobile) {
		this.oUMobile = oUMobile;
	}

	public String getOrderId() {
		return orderId;
	}

	public void setOrderId(String orderId) {
		this.orderId = orderId;
	}

	public String getoFAId() {
		return oFAId;
	}

	public void setoFAId(String oFAId) {
		this.oFAId = oFAId;
	}

	public BigDecimal getoSellingPrice() {
		return oSellingPrice;
	}

	public void setoSellingPrice(BigDecimal oSellingPrice) {
		this.oSellingPrice = oSellingPrice;
	}

	public BigDecimal getoSellingRebate() {
		return oSellingRebate;
	}

	public void setoSellingRebate(BigDecimal oSellingRebate) {
		this.oSellingRebate = oSellingRebate;
	}

	public BigDecimal getoCostPrice() {
		return oCostPrice;
	}

	public void setoCostPrice(BigDecimal oCostPrice) {
		this.oCostPrice = oCostPrice;
	}

	public BigDecimal getoCostRebate() {
		return oCostRebate;
	}

	public void setoCostRebate(BigDecimal oCostRebate) {
		this.oCostRebate = oCostRebate;
	}

	public BigDecimal getoCorePrice() {
		return oCorePrice;
	}

	public void setoCorePrice(BigDecimal oCorePrice) {
		this.oCorePrice = oCorePrice;
	}

	public BigDecimal getoCoreRebate() {
		return oCoreRebate;
	}

	public void setoCoreRebate(BigDecimal oCoreRebate) {
		this.oCoreRebate = oCoreRebate;
	}

	public BigDecimal getoTransactionPrice() {
		return oTransactionPrice;
	}

	public void setoTransactionPrice(BigDecimal oTransactionPrice) {
		this.oTransactionPrice = oTransactionPrice;
	}

	public BigDecimal getoTransactionRebate() {
		return oTransactionRebate;
	}

	public void setoTransactionRebate(BigDecimal oTransactionRebate) {
		this.oTransactionRebate = oTransactionRebate;
	}

	public String getoDefriendStatus() {
		return oDefriendStatus;
	}

	public void setoDefriendStatus(String oDefriendStatus) {
		this.oDefriendStatus = oDefriendStatus;
	}

	public String getCreateDateStart() {
		return createDateStart;
	}

	public void setCreateDateStart(String createDateStart) {
		this.createDateStart = createDateStart;
	}

	public String getCreateDateEnd() {
		return createDateEnd;
	}

	public void setCreateDateEnd(String createDateEnd) {
		this.createDateEnd = createDateEnd;
	}

	public BigDecimal getoAmountStart() {
		return oAmountStart;
	}

	public void setoAmountStart(BigDecimal oAmountStart) {
		this.oAmountStart = oAmountStart;
	}

	public BigDecimal getoAmountEnd() {
		return oAmountEnd;
	}

	public void setoAmountEnd(BigDecimal oAmountEnd) {
		this.oAmountEnd = oAmountEnd;
	}

	public String getOrderManagerUser() {
		return orderManagerUser;
	}

	public void setOrderManagerUser(String orderManagerUser) {
		this.orderManagerUser = orderManagerUser;
	}

	public String getSystemUserId() {
		return systemUserId;
	}

	public void setSystemUserId(String systemUserId) {
		this.systemUserId = systemUserId;
	}

	public String getIsnoManagerUser() {
		return isnoManagerUser;
	}

	public void setIsnoManagerUser(String isnoManagerUser) {
		this.isnoManagerUser = isnoManagerUser;
	}

	public String getoPType() {
		return oPType;
	}

	public void setoPType(String oPType) {
		this.oPType = oPType;
	}

	public BigDecimal getoBackCorePrice() {
		return oBackCorePrice;
	}

	public void setoBackCorePrice(BigDecimal oBackCorePrice) {
		this.oBackCorePrice = oBackCorePrice;
	}

	public BigDecimal getoBackCoreRebate() {
		return oBackCoreRebate;
	}

	public void setoBackCoreRebate(BigDecimal oBackCoreRebate) {
		this.oBackCoreRebate = oBackCoreRebate;
	}

	public BigDecimal getoBackCostPrice() {
		return oBackCostPrice;
	}

	public void setoBackCostPrice(BigDecimal oBackCostPrice) {
		this.oBackCostPrice = oBackCostPrice;
	}

	public BigDecimal getoBackCostRebate() {
		return oBackCostRebate;
	}

	public void setoBackCostRebate(BigDecimal oBackCostRebate) {
		this.oBackCostRebate = oBackCostRebate;
	}

	public BigDecimal getoBackSellingPrice() {
		return oBackSellingPrice;
	}

	public void setoBackSellingPrice(BigDecimal oBackSellingPrice) {
		this.oBackSellingPrice = oBackSellingPrice;
	}

	public BigDecimal getoBackSellingRebate() {
		return oBackSellingRebate;
	}

	public void setoBackSellingRebate(BigDecimal oBackSellingRebate) {
		this.oBackSellingRebate = oBackSellingRebate;
	}

	public BigDecimal getoBackRebateRate() {
		return oBackRebateRate;
	}

	public void setoBackRebateRate(BigDecimal oBackRebateRate) {
		this.oBackRebateRate = oBackRebateRate;
	}

	public BigDecimal getoBackRebateAmount() {
		return oBackRebateAmount;
	}

	public void setoBackRebateAmount(BigDecimal oBackRebateAmount) {
		this.oBackRebateAmount = oBackRebateAmount;
	}

	public BigDecimal getoBackTransactionPrice() {
		return oBackTransactionPrice;
	}

	public void setoBackTransactionPrice(BigDecimal oBackTransactionPrice) {
		this.oBackTransactionPrice = oBackTransactionPrice;
	}

	public BigDecimal getoBackTransactionRebate() {
		return oBackTransactionRebate;
	}

	public void setoBackTransactionRebate(BigDecimal oBackTransactionRebate) {
		this.oBackTransactionRebate = oBackTransactionRebate;
	}

	public String getUpstreamHitman() {
		return upstreamHitman;
	}

	public void setUpstreamHitman(String upstreamHitman) {
		this.upstreamHitman = upstreamHitman;
	}

	public String getUpstreamHitmanNum() {
		return upstreamHitmanNum;
	}

	public void setUpstreamHitmanNum(String upstreamHitmanNum) {
		this.upstreamHitmanNum = upstreamHitmanNum;
	}

	public String getoFARealName() {
		return oFARealName;
	}

	public void setoFARealName(String oFARealName) {
		this.oFARealName = oFARealName;
	}

	public String getoFACardNum() {
		return oFACardNum;
	}

	public void setoFACardNum(String oFACardNum) {
		this.oFACardNum = oFACardNum;
	}

	public String getSendContractNum() {
		return sendContractNum;
	}

	public void setSendContractNum(String sendContractNum) {
		this.sendContractNum = sendContractNum;
	}

	public String getReceiveContractNum() {
		return receiveContractNum;
	}

	public void setReceiveContractNum(String receiveContractNum) {
		this.receiveContractNum = receiveContractNum;
	}

	public BigDecimal getConfirmForntRebate() {
		return confirmForntRebate;
	}

	public void setConfirmForntRebate(BigDecimal confirmForntRebate) {
		this.confirmForntRebate = confirmForntRebate;
	}

	public BigDecimal getConfirmForntAmount() {
		return confirmForntAmount;
	}

	public void setConfirmForntAmount(BigDecimal confirmForntAmount) {
		this.confirmForntAmount = confirmForntAmount;
	}

	public BigDecimal getConfirmBackRebate() {
		return confirmBackRebate;
	}

	public void setConfirmBackRebate(BigDecimal confirmBackRebate) {
		this.confirmBackRebate = confirmBackRebate;
	}

	public BigDecimal getConfirmBackAmount() {
		return confirmBackAmount;
	}

	public void setConfirmBackAmount(BigDecimal confirmBackAmount) {
		this.confirmBackAmount = confirmBackAmount;
	}

	public BigDecimal getConfirmOtherAmount() {
		return confirmOtherAmount;
	}

	public void setConfirmOtherAmount(BigDecimal confirmOtherAmount) {
		this.confirmOtherAmount = confirmOtherAmount;
	}

	public String getComfirmOtherSectionDesc() {
		return comfirmOtherSectionDesc;
	}

	public void setComfirmOtherSectionDesc(String comfirmOtherSectionDesc) {
		this.comfirmOtherSectionDesc = comfirmOtherSectionDesc;
	}

	public BigDecimal getoFinanceFrontRebate() {
		return oFinanceFrontRebate;
	}

	public void setoFinanceFrontRebate(BigDecimal oFinanceFrontRebate) {
		this.oFinanceFrontRebate = oFinanceFrontRebate;
	}

	public BigDecimal getoFinanceBackRebate() {
		return oFinanceBackRebate;
	}

	public void setoFinanceBackRebate(BigDecimal oFinanceBackRebate) {
		this.oFinanceBackRebate = oFinanceBackRebate;
	}

	public BigDecimal getoActivityAmount() {
		return oActivityAmount;
	}

	public void setoActivityAmount(BigDecimal oActivityAmount) {
		this.oActivityAmount = oActivityAmount;
	}

	public String getoPlaySectionDesc() {
		return oPlaySectionDesc;
	}

	public void setoPlaySectionDesc(String oPlaySectionDesc) {
		this.oPlaySectionDesc = oPlaySectionDesc;
	}

	public BigDecimal getoFinanceOtherAmount() {
		return oFinanceOtherAmount;
	}

	public void setoFinanceOtherAmount(BigDecimal oFinanceOtherAmount) {
		this.oFinanceOtherAmount = oFinanceOtherAmount;
	}

	public String getoFinancOtherAmountDesc() {
		return oFinancOtherAmountDesc;
	}

	public void setoFinancOtherAmountDesc(String oFinancOtherAmountDesc) {
		this.oFinancOtherAmountDesc = oFinancOtherAmountDesc;
	}

	public String getoKnotType() {
		return oKnotType;
	}

	public void setoKnotType(String oKnotType) {
		this.oKnotType = oKnotType;
	}

	public String getoFrontContractDocument() {
		return oFrontContractDocument;
	}

	public void setoFrontContractDocument(String oFrontContractDocument) {
		this.oFrontContractDocument = oFrontContractDocument;
	}

	public String getoContractDocument() {
		return oContractDocument;
	}

	public void setoContractDocument(String oContractDocument) {
		this.oContractDocument = oContractDocument;
	}

	public String getoBackContractDocument() {
		return oBackContractDocument;
	}

	public void setoBackContractDocument(String oBackContractDocument) {
		this.oBackContractDocument = oBackContractDocument;
	}

	public String getoFlowerName() {
		return oFlowerName;
	}

	public void setoFlowerName(String oFlowerName) {
		this.oFlowerName = oFlowerName;
	}

	public String getoManagerName() {
		return oManagerName;
	}

	public void setoManagerName(String oManagerName) {
		this.oManagerName = oManagerName;
	}

	public String getoAnnualRevenue() {
		return oAnnualRevenue;
	}

	public void setoAnnualRevenue(String oAnnualRevenue) {
		this.oAnnualRevenue = oAnnualRevenue;
	}

	public String getProductCreateBy() {
		return productCreateBy;
	}

	public void setProductCreateBy(String productCreateBy) {
		this.productCreateBy = productCreateBy;
	}

	public String getoFlowerId() {
		return oFlowerId;
	}

	public void setoFlowerId(String oFlowerId) {
		this.oFlowerId = oFlowerId;
	}

	public String getoManagerId() {
		return oManagerId;
	}

	public void setoManagerId(String oManagerId) {
		this.oManagerId = oManagerId;
	}

	public Integer getoBackStatus() {
		return oBackStatus;
	}

	public void setoBackStatus(Integer oBackStatus) {
		this.oBackStatus = oBackStatus;
	}


	public String getoMediaSource() {
		return oMediaSource;
	}

	public void setoMediaSource(String oMediaSource) {
		this.oMediaSource = oMediaSource;
	}

	@Override
	public String csvTitle() {
		return "订单号,产品简称,订单金额,理财师,预约时间";
	}

	@Override
	public String toCsvString() {
		StringBuilder builder = new StringBuilder();
		builder.append(getoCode()).append(",")
		.append(checkString(getoPName())).append(",")
		.append(getoAmount()).append(",")
		.append(getoULoginName()).append(",")
		.append(DateUtil.getString(getCreateDate(), DateUtil.DEFAULT_DATE_FORMAT)).append(",");
		return builder.toString();
	}
	public  String checkString(String status){
		if(StringUtil.isNullOrEmptyStr(status)){
			return "";
		}else{
			return status.replaceAll(",", "，");
		}	
	}

	public List<FpProjectRabate> getRebateList() {
		return rebateList;
	}

	public void setRebateList(List<FpProjectRabate> rebateList) {
		this.rebateList = rebateList;
	}

	public List<OrderFlowDTO> getOrderFlowList() {
		return orderFlowList;
	}

	public void setOrderFlowList(List<OrderFlowDTO> orderFlowList) {
		this.orderFlowList = orderFlowList;
	}

	public List<FpOrderCostDTO> getOrderCostList() {
		return orderCostList;
	}

	public void setOrderCostList(List<FpOrderCostDTO> orderCostList) {
		this.orderCostList = orderCostList;
	}

	public boolean isBackApplyStatus() {
		return backApplyStatus;
	}

	public void setBackApplyStatus(boolean backApplyStatus) {
		this.backApplyStatus = backApplyStatus;
	}

	public String getOrderIds() {
		return orderIds;
	}

	public void setOrderIds(String orderIds) {
		this.orderIds = orderIds;
	}

	public String getOrderIdFile() {
		return orderIdFile;
	}

	public void setOrderIdFile(String orderIdFile) {
		this.orderIdFile = orderIdFile;
	}
}
